本文为《GUN/Linux编程》的个人读书笔记
<未完待续>
目录:
- 1UNIX系统概述
- 2Shell命令
- 3Linux系统的定制
- 4Shell程序设计
- 5GNU C开发环境
- 6Linux文件与目录
- 7Linux信号
- 8Linux进程
- 9Linux进程通信
- 10I/O操作模式
1.1UNIX的发展历史
1.1.1UNIX的产生与发展
1.1.2UNIX的相关标准
1.2GNU的诞生与发展
1.2.1自由软件计划GNU
1.2.2许可证协议
1.2.3自由软件和开源软件
1.3Linux 内核
1.3.1Minix操作系统
1.3.2Linux的产生与发展
1.3.3Linux内核版本
1.3.4Linux内核的分类
1.4Linux 系统
1.4.1Linux系统的概念
1.4.2GNU/Linux
1.4.3Linux 发行版
1.5Linux系统的商业运营模式
2Shell命令
2.1Shell命令概述
2.1.1目录的组织结构
系统目录树:
[root@VM_9_128_centos //]# tree -L 1
.
|– bin -> usr/bin #所有用户可使用的可执行文件
|– boot #Linux内核映像文件和与引导加载有关的文件
|– data
|– dev #所有设备文件,包括字符设备和块设备
|– etc #系统配置文件
|– home
|– lib -> usr/lib #共享库文件,供/bin下的文件和/sbin下的文件使用
|– lib64 -> usr/lib64
|– lost+found
|– media
|– mnt #挂载点,常用于挂载文件系统
|– opt
|– proc #基于内存的文件系统,用于显示内核消息
|– project
|– root
|– run
|– sbin -> usr/sbin
|– srv
|– sys
|– tmp
|– usr
|– /usr/bin #用户命令文件
|– /usr/include #C头文件
|– /usr/lib #函数库
|– /usr/src #源代码目录
|– /usr/sbin #系统命令工具
|– var
`– zxLiao
“/“表示根目录。为了便于管理,每个目录中存放两个特殊目录,分别表示当前目录”.”和父目录”..” 2.1.2文件的路径
当”/“位于字符串首位时,表示根目录,位于两个目录之间时,表示分隔符。
1.用户主目录:
每个用户在登录进系统时,都位于某个目录,该目录称为用户主目录。root用户的用户主目录是/root,普通用户的用户主目录通常都是/home/username。
2.绝对路径:
从根目录开始到目标目录
3.相对路径:
从当前目录到目标目录
2.1.3Linux命令的语法结构
命令常用的语法结构定义如下:
$ 命令名 [选项] [参数列表]
其中,$为提示符,提示符可以通过环境变量重新设置,命令名代表命令的名称,通常是可执行文件的文件名。
2.1.4Shell命令的分类
根据Shell命令实现方式的不同,shell命令可分为内部命令和外部命令。
1.内部命令
内部命令由Shell实现,具有较高额执行效率,运行于当前进程,可以通过命令type判断是否为外部命令
type -t ls
2.外部命令
外部命令是指存储于文件系统中的可执行二进制映像文件。Shell创建子进程,在子进程中加载并执行外部命令。可以通过file查看外部命令的信息。
file cp
2.1.5联机帮助
man ls
info cp
ls --help
2.1.5联机帮助2.2目录和文件操作
2.2.1目录操作
1. pwd命令
pwd
当前目录的绝对路径
2.cd命令
cd 目录名
改变当前目录
cd test #切换到当前目录下的test子目录
cd / #切换到系统根目录
cd .. #却换到上机目录
cd ~/demo #切换到用户主目录下的demo目录
3.mkdir命令
mkdir [选项] 目录名
创建指定名称的目录
mkdir test #在当前路径下创建test
mkdir ~/test #在用户主目录下创建test
mkdir -p /test1/test2 #创建一系列目录[-p]
4、rmdir命令
rmdir [选项] 目录名
删除指定名称的空目录
rmdir mydir #删除当前目录下的mydir
rmdir -p dir1/dir2 #删除dir2,如果dir1也是空目录,一并删除
2.2.2文件操作
1.ls命令
ls [选项] 目录或文件
显示文件和目录信息
|选项|含义|
|——–|
|-a|查询所有文件,包含以.开头的隐藏文件|
|-l|以详细列表的方式显示文件属性|
|-i|显示文件的i节点编号|
|-R|连同子目录内容一起输出|
2.cp命令
cp [选项] 源文件 目标文件
将源文件复制到目标文件
|选项|含义|
|——–|
|-l|若目标文件已存在,指示要不要覆盖|
|-p|连同源文件的属性一并复制到目标文件|
|-r|递归复制,用于文件复制|
|-u|若目标文件比源文件旧,则更新目标文件|
cp file1 file2 #将文件file1复制为文件file2
cp -r dir1 dir2 #递归复制dir1下的所有文件到dir2
cp -ur ~/dir1 ~/dir2 #更新dir1的备份文件dir2
3.rm命令
rm [选项] 文件列表
删除文件列表中的文件
|选项|含义|
|——–|
|-i|在删除文件前给出提示|
|-r|递归删除,用于删除目录|
|-f|强制删除,不给出提示|
rm file1 file2 #删除文件file1和file2
rm r dir1 #递归删除目录dir1
rm -ir ~/dir1 #递归删除目录用户主目录下的dir1并给出提示
4.mv命令
mv [选项] 文件和目录列表 目标文件
将列表的所有目录和文件移动到目标目录
|选项|含义|
|——–|
|-i|若目标文件已存在,提示是否要覆盖|
|-f|强制移动,若目标文件已存在,不进行提示|
|-u|若目标已存在且比较旧,则用源文件更新|
mv file1 file2 #将文件file1更名为file2
mv file1 dir1 dir2 #将文件file1和目录dir1移动到目录dir2
5.find命令
find [目录列表] [匹配方式]
在目标目录中按照匹配方式搜索符合添加的文件
|匹配方式|含义|
|———|
|-name 文件名|在目录列表中查询和文件名相匹配的文件|
|-type x|在目录列表中检索类型为x的文件,例如d表示目录|
|-newer 文件名|搜索所有修改时间比file文件更新的文件|
|-size n|匹配所有大小为n块的文件,c在n后表示字节数|
|-mtime n|匹配所有在前n天内修改过的文件|
|-atime n|匹配所有在前n天内访问过的文件|
|-print |显示整个文件路径和名称|
|-user 用户名|搜索所有属主为用户名的文件|
|-exec command|匹配的文件执行command命令,命令的形式为command{}|;
2.2.3显示文本文件内容
1.cat
2.more
3.less
4.head
5.tail
2.2.4硬链接和软链接
2.3用户和用户组管理
2.3.1用户的分类
2.3.2用户组管理
1.groupadd命令
2.groupdel命令
2.3.3用户管理
1.useradd
2.paddword
2.3.4用户属性的修改
1.usermod
2.chown
2.3.5用户管理相关配置文件
2.4文件的权限管理
2.4.1文件属性
2.4.2权限的修改
2.4.3权限验证
2.4.4权限掩码umask
2.4.5文件和目录权限的计算
2.5进程管理
2.5.1进程的管理信息
2.5.2与进程相关的命令
1.pstree
2.ps
3.kill
4.fg
5.bg
6.jobs
2.6Linux的备份与恢复
2.6.1面向文件的备份与恢复
2.6.2面向文件系统的备份
2.6.3面向设备的备份与恢复
2.7Linux应用软件包管理
2.7.1应用软件包的分类
2.7.2RPM软件包的管理
2.8输入输出重定向和管道
2.8.1标准输入输出文件的定义
2.8.2输人输出重定向
2.8.3管道
2.9元字符与正则表达式
2.9.1元字符
2.9.2正则表达式
3Linux系统的定制
3.1磁盘管理
3.1.1硬盘的物理结构
3.1.2磁盘分区
3.1.3分区格式化
3.1.4 ext2文件系统
3.1.5文件系统的挂载与卸载
3.2引导加载程序grub
3.2.1引导加载的概念
3.2.2引导加载祝序grub
3.2.3grub 交互命令
3.2.4grub的启动过程
3.3Linux内核定制
3.3.1 Linux 内核
3.3.2定制Linux内核
3.4Linux应用环境的初始化
3.4.1引导配置文件inittab
3.4.2用户登录
4Shell程序设计
4.1Shell 概述
4.2Shell脚本的定义与执行
4.3Shell 变量
4.4输入和输出
4.3.1 Shell变量的分类
4.3.2命令替换
4.5Shell中的引号
4.6条件表达式
4.5.1条件表达式
4.5.2命令分隔符
4.6判断语句
4.6.1条件语句
4.6.2分支语句
4.7循环语句
4.7.1for循环语句
4.7.2while 语句
4.7.3until 语句
4.8 函数
5GNU C开发环境
5.1GNU C编译器
5.1.1目标代码的生成
5.1.2GCC 概述
5.1.3GNU C编译链接工具
5.2项目管理工具 GNU make
5.2.1项目管理概述
5.2.2基于make工具的项目管理
5.2.3Makefile 中的变量
5.2.4Makefile文件中的潜规则
5.3创建和使用函数库
5.3.1静态库
5.3.2共享库
5.3.3动态链接库
5.4GNU C 函数库——glibc
6Linux文件与目录
6.1Linux文件系统概述
6.1.1文件系统的概念
6.1.2虚拟文件系统
6.1.3文件系统的结构
6.1.4应用编程接口
6.2文件的基本输人输出
6.2.1 文件操作
6.2.2标准输人输出文件的定义
6.2.3编程实例
6.3文件属性操作
6.3.1获得文件属性
6.3.2修改文件存取权限
6.3.3改变文件的属主和属组
6.4目录操作
6.4.1目录操作
6.4.2浏览目录中的文件
6.5标准I/O库
6.5.1标准I/O库概述
6.5.2文件操作
6.5.3格式化输入与输出
6.5.4刷新缓冲区
6.6 I/O重定向
6.6.1文件描述符
6.6.2I/O重定向
6.6.3实现重定向的方法
7Linux信号
7.1信号概述
7.1.1信号的概念
7.1.2应用编程接口
7.2Linux系统中的信号
7.2.1Linux系统中的信号
7.2.2信号的分类
7.2.3 Linux信号的产生
7.2.4信号的处理方式
7.2.5信号的处理流程
7.3信号的定义
7.3.1设置信号的行为
7.3.2信号处理函数
7.3.3定义多个信号
7.3.4信号的阻塞
7.4发送信号
7.5计时器
7.5.1睡眠延迟
7.5.2间隔计时器
8Linux进程
8.1Linux进程概述
8.1.1Linux 进程
8.1.2应用编程接口
8.2进程的地址空间
8.2.1进程的地址空间
8.2.2环境变量相关操作
8.2.3命令行参数的引用
8.2.4动态内存管理
8.3进程的创建与终止
8.3.1创建进程
8.3.2程序的启动与结束
8.4加载可执行映像
8.4.1ELF格式
8.4.2可执行文件的加载
8.5进程同步控制
8.5.1等待子进程结束
8.5.2等待指定子进程
8.6 Linux进程环境
8.6.1用户和用户组
8.6.2进程和进程组
8.6.3会话
8.6.4守护进程
9Linux进程通信
9.1进程通信概述
9.1.1进程通信方式
9.1.2应用编程接口
9.2管道
9.2.1无名管道
9.2.2命名管道
9.3 IPC 概述
9.4信号量
9.4.1创建信号量
9.4.2获得与释放信号量
9.4.3信号量的控制操作
9.5消息队列
9.5.1创建消息队列
9.5.2发送消息
9.5.3接收消息
9.5.4设置消息队列属性
9.6 共享内存
9.6.1创建共享内存
9.6.2共享内存映射的建立与释放
9.6.3设置共享内存属性
10I/O操作模式
10.1 I/O操作模式概述
10.1.1 I/O操作模式
10.1.2应用编程接口
10.2同步阻塞I/O模式
10.2.1基本概念
10.2.2存在的问题
10.2.3 解决方法
10.3同步非阻塞1/0棋式
10.3.1基本概念
10.3.2实现方式
10.4多路复用I/O模式
10.4.1基本概念
10.4.2实现方法
10.5信号驱动的I/O模式
10.5.1基本概念
10.5.2实现方法
10.6异步I/O模式
10.6.1基本概念
10.6.2 实现方法
10.7内存的I/O映射
10.7.1基本概念
10.7.2:实现方法
10.8文件锁
10.8.1文件锁的类型
10.8.2基于flock函数实现文件锁
10.8.3利用fcntl函数实现文件加锁
10.9终端I/O
10.9.1终端的行为模式
10.9.2终端模式的设置
10.9.3终端I/O的编程接口
附录一
命令 | 参数 | 作用 |
---|---|---|
ls | 列出指定目录下的所有文件[缺省是当前路径] | |
tye | 判断是什么类型的命令 | |
file | ||
man | 查询命令的操作文档 | |
info | 获得命令的相关信息 | |
pwd | 当前目录的绝对路径 | |
* | –help | 获得命令的相关信息 |